home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / DELPHI32 / TOOLBARS / FLOATER / FLOATER.PAS < prev    next >
Pascal/Delphi Source File  |  1996-04-12  |  3KB  |  98 lines

  1. {***********************************************************}
  2. {                                                           }
  3. {        Floater - Floating toolbar component               }
  4. {                                                           }
  5. {        Copyright (C) 1996, by Jan Goyvaerts               }
  6. {        All rights reserved                                }
  7. {                                                           }
  8. {***********************************************************}
  9.  
  10. {***********************************************************}
  11. {                                                           }
  12. {  You may freely distribute, use and modify this code as   }
  13. {  long as this statement and the above copyright           }
  14. {  information are included and remain unmodified.          }
  15. {  You can contact me (John) at johnfg@tornado.be           }
  16. {  Happy programming!                                       }
  17. {                                                           }
  18. {***********************************************************}
  19.  
  20. unit Floater;
  21.  
  22. interface
  23.  
  24. uses
  25.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  26.   Forms, Dialogs, Buttons, ExtCtrls;
  27.  
  28. type
  29.   TFloatingForm = class(TForm)
  30.     CaptionPanel: TPanel;
  31.     ButtonPanel: TPanel;
  32.     SpeedButton1: TSpeedButton;
  33.     SpeedButton2: TSpeedButton;
  34.     SpeedButton3: TSpeedButton;
  35.     SpeedButton4: TSpeedButton;
  36.     procedure CaptionPanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  37.     procedure CaptionPanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  38.     procedure FormCreate(Sender: TObject);
  39.   private
  40.     OldX, OldY: Integer;
  41.     OldAppDeactivate, OldAppActivate: TNotifyEvent;
  42.     procedure WMMouseActivate(var Msg: TWMMouseActivate); message WM_MOUSEACTIVATE;
  43.     procedure AppDeactivate(Sender: TObject);
  44.     procedure AppActivate(Sender: TObject);
  45.   public
  46.     { Public declarations }
  47.   end;
  48.  
  49. var
  50.   FloatingForm: TFloatingForm;
  51.  
  52. implementation
  53.  
  54. {$R *.DFM}
  55.  
  56. procedure TFloatingForm.WMMouseActivate(var Msg: TWMMouseActivate);
  57. begin
  58.   Msg.Result := MA_NOActivate
  59. end;
  60.  
  61. procedure TFloatingForm.CaptionPanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  62. begin
  63.   OldX := X; OldY := Y
  64. end;
  65.  
  66. procedure TFloatingForm.CaptionPanelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  67. begin
  68.   if ssLeft in Shift then SetBounds(Left + (X - OldX), Top + (Y - OldY), Width, Height)
  69. end;
  70.  
  71. procedure TFloatingForm.AppDeactivate(Sender: TObject);
  72. begin
  73.   if Assigned(OldAppDeactivate) then OldAppDeactivate(Sender);
  74.   Application.NormalizeTopMosts;
  75.   CaptionPanel.Color := clInactiveCaption;
  76.   CaptionPanel.Font.Color := clInactiveCaptionText;
  77.   Enabled := False
  78. end;
  79.  
  80. procedure TFloatingForm.AppActivate(Sender: TObject);
  81. begin
  82.   if Assigned(OldAppActivate) then OldAppActivate(Sender);
  83.   Application.RestoreTopMosts;
  84.   CaptionPanel.Color := clActiveCaption;
  85.   CaptionPanel.Font.Color := clCaptionText;
  86.   Enabled := True
  87. end;
  88.  
  89. procedure TFloatingForm.FormCreate(Sender: TObject);
  90. begin
  91.   OldAppDeactivate := Application.OnDeactivate;
  92.   OldAppActivate := Application.OnActivate;
  93.   Application.OnDeactivate := AppDeactivate;
  94.   Application.OnActivate := AppActivate
  95. end;
  96.  
  97. end.
  98.